﻿using System;
using System.Data;
using System.Data.SqlClient;

namespace Module.QuanTriHeThong.DanhMuc
{
    public class DMVatTu : DBInteractionBase
    {
        public string MaVatTu { get; set; }
        public string TenVatTu { get; set; }
        public string MaDonVi { get; set; }
        public string MaNhomVatTu { get; set; }
        public bool BHChiTra { get; set; }
        public bool IsActive { get; set; }

        public bool Insert(DMVatTu obj)
        {
            try
            {
                using (var dbcmd = new SqlCommand("tb_DMVatTu_Insert", GetConnection()))
                {
                    dbcmd.CommandType = CommandType.StoredProcedure;
                    dbcmd.Parameters.Add(new SqlParameter("@MaVatTu", ConvertNvarcharToVarchar(obj.MaVatTu)));
                    dbcmd.Parameters.Add(new SqlParameter("@TenVatTu", obj.TenVatTu));
                    dbcmd.Parameters.Add(new SqlParameter("@MaDonVi", obj.MaDonVi));
                    dbcmd.Parameters.Add(new SqlParameter("@MaNhomVatTu", obj.MaNhomVatTu));
                    dbcmd.Parameters.Add(new SqlParameter("@BHChiTra", obj.BHChiTra));
                    dbcmd.Parameters.Add(new SqlParameter("@IsActive", obj.IsActive));
                    dbcmd.ExecuteNonQuery();
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool Update(DMVatTu obj)
        {
            try
            {
                using (var dbcmd = new SqlCommand("tb_DMVatTu_Update", GetConnection()))
                {
                    dbcmd.CommandType = CommandType.StoredProcedure;
                    dbcmd.Parameters.Add(new SqlParameter("@MaVatTu", obj.MaVatTu));
                    dbcmd.Parameters.Add(new SqlParameter("@TenVatTu", obj.TenVatTu));
                    dbcmd.Parameters.Add(new SqlParameter("@MaDonVi", obj.MaDonVi));
                    dbcmd.Parameters.Add(new SqlParameter("@MaNhomVatTu", obj.MaNhomVatTu));
                    dbcmd.Parameters.Add(new SqlParameter("@BHChiTra", obj.BHChiTra));
                    dbcmd.Parameters.Add(new SqlParameter("@IsActive", obj.IsActive));
                    dbcmd.ExecuteNonQuery();
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool Delete(string id)
        {
            try
            {
                using (var dbcmd = new SqlCommand("tb_DMVatTu_Delete", GetConnection()))
                {
                    dbcmd.CommandType = CommandType.StoredProcedure;
                    dbcmd.Parameters.Add(new SqlParameter("@MaVatTu", id));
                    dbcmd.ExecuteNonQuery();
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public DataTable SelectById(string id)
        {
            var dt = new DataSet();
            try
            {
                using (var dbcmd = new SqlCommand("tb_DMVatTu_SelectById", GetConnection()))
                {
                    dbcmd.CommandType = CommandType.StoredProcedure;
                    dbcmd.Parameters.Add(new SqlParameter("@MaVatTu", id));
                    var dtAdapter = new SqlDataAdapter(dbcmd);
                    dtAdapter.Fill(dt);
                    return dt.Tables[0];
                }
            }
            catch (Exception ex)
            {
                throw new Exception("tb_DMVatTu_SelectById: " + ex.Message);
            }
        }

        public DataTable SelectAll(DMVatTu obj, int pageindex, int pagesize, out int recordcount)
        {
            var dt = new DataSet();
            try
            {
                using (var dbcmd = new SqlCommand("tb_DMVatTu_SelectAll", GetConnection()))
                {
                    dbcmd.CommandType = CommandType.StoredProcedure;
                    dbcmd.Parameters.Add(new SqlParameter("@MaVatTu", string.IsNullOrEmpty(obj.MaVatTu) ? "" : obj.MaVatTu));
                    dbcmd.Parameters.Add(new SqlParameter("@TenVatTu", string.IsNullOrEmpty(obj.TenVatTu) ? "" : obj.TenVatTu));
                    dbcmd.Parameters.Add(new SqlParameter("@MaDonVi", string.IsNullOrEmpty(obj.MaDonVi) ? "" : obj.MaDonVi));
                    dbcmd.Parameters.Add(new SqlParameter("@MaNhomVatTu", string.IsNullOrEmpty(obj.MaNhomVatTu) ? "" : obj.MaNhomVatTu));
                    dbcmd.Parameters.Add(new SqlParameter("@PageIndex", pageindex));
                    dbcmd.Parameters.Add(new SqlParameter("@PageSize", pagesize));
                    dbcmd.Parameters.Add(new SqlParameter("@RecordCount", SqlDbType.Int, 50)
                    {
                        Direction = ParameterDirection.Output
                    });
                    var dtAdapter = new SqlDataAdapter(dbcmd);
                    dtAdapter.Fill(dt);
                    recordcount = Convert.ToInt32(dbcmd.Parameters["@RecordCount"].Value);
                    return dt.Tables[0];
                }
            }
            catch (Exception ex)
            {
                throw new Exception("tb_DMVatTu_SelectAll: " + ex.Message);
            }
        }

        public bool ImportFromExcel(string sheetname, string filepath, string hdr,
            string tablename, out int totalrow)
        {
            try
            {
                using (var dbcmd = new SqlCommand("tb_DMVatTu_ImportFromExcel", GetConnection()))
                {
                    dbcmd.CommandType = CommandType.StoredProcedure;
                    dbcmd.Parameters.Add(new SqlParameter("@SheetName", sheetname));
                    dbcmd.Parameters.Add(new SqlParameter("@FilePath", filepath));
                    dbcmd.Parameters.Add(new SqlParameter("@HDR", hdr));
                    dbcmd.Parameters.Add(new SqlParameter("@TableName", tablename));
                    totalrow = dbcmd.ExecuteNonQuery();
                }
                return true;
            }
            catch (Exception)
            {
                totalrow = 0;
                return false;
            }
        }
    }
}
